/*********************************************************
 *
 *   功能： 复制图片
 *   主要插件：
 *       1. gulp-changed              ---        监控文件，过滤未改动的文件
 *       2. browser-sync              ---        搭建web服务器
 *       3. del                       ---        删除文件
 *       4. vinyl-paths               ---        动态获取文件路径
 *       5. gulp-if：                 ---        有条件的运行gulp任务
 *********************************************************/

const gulp = require('gulp'),
  changed = require('gulp-changed'),
  del = require('del'),
  vinylPaths = require('vinyl-paths'),
  gulpIf = require('gulp-if')

// 工具模块
const util = require('./util'),
  plumberHandle = util.plumberHandle,
  msgHandle = util.msgTipHandle

/**
 * images下的图片处理
 * @param event
 * @param config
 * @param connect
 */
function images (event, config, connect) {
  let imagesConfig = config.imagesConfig
  if (event.type === undefined) {
    return gulp.src(imagesConfig.src)
      .pipe(plumberHandle())
      .pipe(gulpIf(config.debug, msgHandle()))
      .pipe(gulp.dest(imagesConfig.dist))
      .pipe(connect.reload())
  } else if (event.type === 'add' || event.type === 'change') {
    return gulp.src(imagesConfig.src)
      .pipe(plumberHandle())
      .pipe(changed(imagesConfig.dist))
      .pipe(gulpIf(config.debug, msgHandle()))
      .pipe(gulp.dest(imagesConfig.dist))
      .pipe(connect.reload())
  } else if (event.type === 'unlink') {
    let delPath = []
    if (event.path && event.path.length > 0) {
      for (let i = 0; i < event.path.length; i++) {
        const path = event.path[i].replace(/\\/g, '/').replace(config.src, config.dist)  // 对删除路径处理
        delPath.push(path)
      }
    }
    return gulp.src(delPath)
      .pipe(plumberHandle())
      .pipe(vinylPaths(del))
      .pipe(gulpIf(config.debug, msgHandle()))
  }
}

module.exports = {
  images: images
}
